package com.sky.annotation;

import com.sky.enumeration.OperationType;
import org.apache.ibatis.annotations.Options;
import org.springframework.transaction.annotation.Transactional;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义注解，用于标识需要自动填充的字段
 * @Target：可使用的值定义在ElementType枚举类中，常用值如下：TYPE，类，接口 / FIELD, 成员变量 / METHOD, 成员方法
 * @Retention：定义该注解的生命周期，可选值定义在RetentionPolicy枚举类中，常用值如下：SOURCE，注解只保留在源文件 / CLASS，注解在class字节码文件中存在 / RUNTIME，注解在运行时可以通过反射获取
 */
@Target(ElementType.METHOD) // 表示该注解只能标识在方法上
@Retention(RetentionPolicy.RUNTIME) // 表示该注解在运行时生效
public @interface AutoFill {

    // 定义数据库操作类型 UPDATE/INSERT
    OperationType value();
}
